package com.springboot.ww.platform.pd.lms.service;

import com.springboot.ww.platform.pd.dto.PdStoreTokenVO;
import com.springboot.ww.platform.pd.lms.api.*;
import com.springboot.ww.platform.pd.lms.dto.*;

import java.util.Date;
import java.util.List;

/**
 * 描述：拼多多接口代理类
 *
 * @author 🧑 ‍wanwei
 * @since 2024-05-13 18:10
 */
public interface IPdProxy {

    /**
     * 匹配仓库
     *
     * @param platWarehouseName
     * @param warehouseCode
     * @return
     */
    boolean matchWarehouseCode(String platWarehouseName,String warehouseCode);

    /**
     * 获取listing
     *
     * @param tokenVO
     * @param page
     * @param timeStart
     * @param timeEnd
     * @return
     */
    List<PdListingResp.DataBean> getListingByTime(PdStoreTokenVO tokenVO, int page, Date timeStart, Date timeEnd);

    /**
     *
     * @param tokenVO
     * @param skcList
     * @return
     */
    List<PdListingResp.DataBean> getListingBySkcList(PdStoreTokenVO tokenVO, List<String> skcList);

    /**
     * 查询库存
     *
     * @param tokenVO
     * @param skcId
     * @param listingLog
     * @return
     */
    List<PdStockResp.ResultBean.ProductSkuStockListBean> getStockCn(PdStoreTokenVO tokenVO, String skcId, PdListingLog listingLog);

    /**
     * 更新库存
     *
     * @param tokenVO
     * @param productSkcId
     * @param pdStockEditReqs
     * @param listingLog
     */
    void updateStockCn(PdStoreTokenVO tokenVO, String productSkcId, List<PdStockEditReq> pdStockEditReqs, PdListingLog listingLog);


    /**
     * 获取类目
     *
     * @param storeVO
     * @param parentCatId
     * @return
     */
    List<PddCatDTO.ResultDTO.CategoryDTOListDTO> getCatOneLevel(PdStoreTokenVO storeVO, Long parentCatId);

    /**
     * @param storeVO
     * @param categoryId
     */
    PddCatAttrDTO.ResultDTO getCatAttr(PdStoreTokenVO storeVO, Long categoryId);

    /**
     *
     * @param storeVO
     * @return
     */
    List<PddSpecAttrDTO.ResultDTO.ParentSpecDTOSDTO> parentSpecGet(PdStoreTokenVO storeVO);

    /**
     * 仓库信息
     *
     * @param storeVO
     * @param siteId
     * @return
     */
    List<PdGoodWarehouseDTO.WarehouseDTOListDTO> goodWarehouse(PdStoreTokenVO storeVO, Integer siteId);


    /**
     * 运费模板
     *
     * @param storeVO
     * @return
     */
    List<PdFreightTemplateDTO.FreightTemplatesDTO> freightTemplateList(PdStoreTokenVO storeVO);

    /**
     * 上传图片
     *
     * @param tokenVO
     * @param picUrl
     * @param catId
     * @param sizeMode
     * @return
     */
    PddImageDTO uploadImage(PdStoreTokenVO tokenVO, String picUrl,Long catId,String sizeMode);


    /**
     * 上传图片
     *
     * @param tokenVO
     * @param picUrl
     * @return
     */
    PddImageDTO uploadImage(PdStoreTokenVO tokenVO, String picUrl);

    /**
     * 创建临时尺码表
     *
     * @param storeVO
     * @param businessId
     * @return
     */
    String createSizeTemplate(PdStoreTokenVO storeVO, String businessId);


    /**
     * 创建listing
     *
     * @param pddListingAddDTO
     * @param storeVO
     * @return
     */
    PdAddListingResp.ResultDTO addListing(PddListingAddReq pddListingAddDTO, PdStoreTokenVO storeVO);

    /**
     * 创建规格
     *
     * @param tokenVO
     * @param parentSpecId
     * @param specName
     * @return
     */
    Long specCreate(PdStoreTokenVO tokenVO, Long parentSpecId, String specName);


    /**
     * 根据类目查询尺码表
     *
     * @param storeVO
     * @param catId
     * @return
     */
    List<PddSizeChartDTO.ResultDTO.SizeSpecDataListDTO> getSizeChart(PdStoreTokenVO storeVO, Long catId);


    /**
     * 创建尺码表
     *
     * @param tokenVO
     * @param pdCreateChartsDTO
     * @return
     */
    String createSizeChart(PdStoreTokenVO tokenVO, PdCreateChartsDTO pdCreateChartsDTO);


    /**
     * 文字转图片
     *
     * @param tokenVO
     * @param text
     * @return
     */
    String textToImg(PdStoreTokenVO tokenVO,String text);

    /**
     * 查询平台状态
     *
     * @param tokenVO
     * @param productSkuIdList
     * @return
     */
    List<PdProductStatusResp.ResultDTO.DataListDTO> getPlatformStatus(PdStoreTokenVO tokenVO, List<String> productSkuIdList);

    /**
     * 获取品牌名
     *
     * @param tokenVO
     */
    List<PdBrandResp.ResultDTO.PageItemsDTO> getBrand(PdStoreTokenVO tokenVO);

    /**
     * 查询类目对应尺码分类
     *
     * @param tokenVO
     * @param catId
     * @return
     */
    Integer getSizeChartsClass(PdStoreTokenVO tokenVO, Long catId);


    /**
     * 上传文件
     *
     * @param tokenVO
     * @param fileUrl
     * @return
     */
    String uploadFile(PdStoreTokenVO tokenVO,String fileUrl);


    /**
     * 识别文件语言
     *
     * @param tokenVO
     * @param pdfId
     * @return
     */
    PdLanguageResp getFileLanguage(PdStoreTokenVO tokenVO,String pdfId);

    /**
     * 查询模特信息列表
     *
     * @param tokenVO
     * @param pdModelReq
     * @return
     */
    List<PdModelResp.ModelDTO> getModelDTO(PdStoreTokenVO tokenVO, PdModelReq pdModelReq);

    /**
     * 根据id查询模特信息
     *
     * @param tokenVO
     * @param modelId
     * @param modelType
     * @return
     */
    PdModelResp.ModelDTO getModelById(PdStoreTokenVO tokenVO, String modelId, Integer modelType);

    /**
     * 查询类目 模特信息
     * @param tokenVO
     * @param catId
     * @return
     */
    PdCatModelResp getCatModelById(PdStoreTokenVO tokenVO, Long catId);

    /**
     *
     * @param tokenVO
     * @return
     */
    List<PdSkuPriceResp.ProductSkuSupplierPriceListDTO> getSkuPriceList(PdStoreTokenVO tokenVO,List<String> skuIdList);
}